#ifndef FLAG2CONTROL_H
#define FLAG2CONTROL_H

#include <QWidget>
#include <QJsonObject>
#include <QHBoxLayout>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QSpacerItem>
#include <QHash>

#include"DeviceManager.h"
#include <QSharedPointer>

class Flag2Control : public QWidget
{
    Q_OBJECT

public:
    explicit Flag2Control(const QJsonObject &flagDetails, const QString deviceID,QWidget *parent = nullptr);
    ~Flag2Control() override { qDebug() << "[Flag2Control] ~Flag2Control()"; }

public slots:
    // 绑定节点后
    void attachToNode(QSharedPointer<DeviceNode> node);
    void pubMsg(QString content);

private:
    QLineEdit *lineEdit;  // 当前控件的 QLineEdit
    QMap<QString, QLineEdit*> lineEditMap;  // 存储 QLineEdit，方便后续访问
    QHash<QString, QString> buttonCommandMap;  // 哈希表存储按钮的命令
    void setupControlLayout(const QJsonObject &flagDetails);  // 设置控件布局

    //更改结点架构
    QSharedPointer<DeviceNode> m_node;
    QString mDeviceName;

private slots:
    void onButtonClicked();  // 按钮点击槽函数
};

#endif // FLAG2CONTROL_H
